本文代码依据rddata.m文件编写,关于数据结构的格式、意义,我在理解后都写在注释里了,有需要的朋友可以认真看一下。欢迎交流。
本文处理的数据是MIT-BIH数据库100.hea和100.dat文件,利用的是matlab工具。
%文件名称 : ECG_Plot
%实现功能 : 读取MIT-BIH-DB文件,读取信号,对信号加噪声,并利用滤波器去噪,并
% 实现图像输出。
%参考资料 : rddata.m Author-Robert Tratnig
%作者信息 : 171848-张冰
% zhangbingemail@qq.com
%
%修订时间 : 2018年3月27日17点03分
%调用格式 : 无
%参数释义 : 无
clc;clear all;
PATH= '';
HEADERFILE= '100.hea';
ATRFILE= '100.atr';
DATAFILE='100.dat';
%=========================对100.dat文件数据的处理=========================%
%.hea文件存储了ECG的基本信息
% 通过函数 fullfile 获得头文件的完整路径
signalh= fullfile(PATH, HEADERFILE);
% 打开头文件,其标识符为 fid1 ,属性为'r'--“只读”
fid1=fopen(signalh,'r');
% 读取头文件的第一行数据,字符串格式
z= fgetl(fid1);
% 按照格式 '%*s %d %d %d' 转换数据并存入矩阵 A 中
A= sscanf(z, '%*s %d %d %d',[1,3]);
nosig= A(1); % 信号通道数目
sfreq=A(2); % 数据采样频率
SAMPLES2READ = 10*sfreq; %取十秒数据
for k=1:nosig % 读取每个通道信号的数据信息
z= fgetl(fid1);
A= sscanf(z, '%*s %d %d %d %d %d',[1,5]);
dformat(k)= A(1); % 信号格式; 这里只允许为 212 格式
gain(k)= A(2); % 每 mV 包含的整数个数
bitres(k)= A(3); % 采样精度(位分辨率)
zerovalue(k)= A(4); % ECG 信号零点相应的整数值
firstvalue(k)= A(5); % 信号的第一个整数